﻿#pragma once
#include <stdio.h>
#include <assert.h>
#include <stdlib.h>

typedef int ListDatatype;

typedef struct Listnode
{
	ListDatatype data;
	struct Listnode* next;
}listnode;

//打印链表数据
void Printf(listnode* phead);
//创建结点
listnode* ListBuynode(ListDatatype x);

//尾部插入数据
void SLTPushBack(listnode** pphead, ListDatatype x);
//头部插入数据
void SLTPushFront(listnode** pphead, ListDatatype x);
//尾部删除数据
void SLTPopBack(listnode** pphead);
//头部删除数据
void SLTPopFront(listnode** pphead);
//查找结点
listnode* find(listnode* phead, ListDatatype x);
//在指定位置之前插入数据
void SLTInsert(listnode** pphead, listnode* phead, ListDatatype x);
//在指定位置之后插⼊数据
void SLTInsertAfter(listnode* pos, ListDatatype x);
//删除pos结点
void SLTErase(listnode** pphead, listnode* pos);
//删除pos之后的结点
 void SLTEraseAfter(listnode* pos);
 //销毁链表
 void SListDestroy(listnode** pphead);